package com.tencent.tmm.knoi.sample

import com.tencent.tmm.knoi.annotation.KnoiExport
import com.tencent.tmm.knoi.annotation.KnoiIgnore

@KnoiExport
data class Student(
    val name: String,
    val age: Int,
    val address: Address,
    val scores: List<Double>,
    val tags: Map<String, String>,
    @KnoiIgnore
    val createTime: Long = 0
)

@KnoiExport
data class Address(
    val city: String,
    val street: String,
    val zipCode: String
)

@KnoiExport
data class School(
    val name: String,
    val address: Address,
    val students: List<Student>,
    val classes: Map<String, List<Student>>
)

// ========== 新增复杂数据类 ==========

@KnoiExport
data class University(
    val name: String,
    val schools: List<School>,
    val partnerships: Map<String, List<School>>,
    val statistics: Statistics
)

@KnoiExport
data class Statistics(
    val totalStudents: Int,
    val averageScore: Double,
    val scoreDistribution: Map<String, Int>,
    val topStudents: List<Student>
)

@KnoiExport
data class Teacher(
    val name: String,
    val subject: String,
    val students: List<Student>,
    val courses: Map<String, Course>
)

@KnoiExport
data class Course(
    val id: String,
    val name: String,
    val credits: Int,
    val students: List<Student>,
    val grades: Map<String, Double>
)

//@KnoiExport
//data class Department(
//    val name: String,
//    val head: Teacher,
//    val teachers: List<Teacher>,
//    val schools: List<School>,
//    val budget: Map<String, Double>
//)

@KnoiExport
data class AnalysisResult(
    val original: Student,
    val enriched: Student,
    val analysis: Map<String, Any?>
)

@KnoiExport
data class BatchResult(
    val processed: List<Map<String, Any?>>,
    val statistics: Map<String, Any?>
)